﻿using famails.bus;
using famails.dto;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace famails.BackEnd.Blog
{
    public partial class Category : System.Web.UI.Page
    {
        CategoryBUS Bus = new CategoryBUS();
        log4net.ILog logs = log4net.LogManager.GetLogger("ErrorRollingLogFileAppender");
        UserLoginDTO userLogin = null;
        protected void Page_Load(object sender, EventArgs e)
        {
            userLogin = getUserLogin();
            if (!IsPostBack)
            {
                try
                {
                    LoadData();
                    hdfId.Value = null;
                }
                catch (Exception ex)
                {


                }
            }
        }
        public void xoatextbok()
        {
            txtdescription.Text = "";
            txtname.Text = "";
        }
        private UserLoginDTO getUserLogin()
        {
            if (Session["us-login"] != null)
            {
                return (UserLoginDTO)Session["us-login"];
            }
            else Response.Redirect("~");
            return null;
        }
        private CategoryDTO GetDTO()
        {

            CategoryDTO sign = new CategoryDTO();
            int temp = 0;
            if (int.TryParse(hdfId.Value + "", out temp))
                sign.CategoryID = temp;
            sign.CategoryName = txtname.Text;
            sign.Description = txtdescription.Text;
            sign.IsShow = cbIsShow.Checked;
            return sign;


        }
        private string checkInput()
        {
            string masseng = "";

            if (txtname.Text == "")
            {
                masseng = "Vui lòng nhập tên chuyên mục";
            }
            else //if (hdfId.Value + "" != "")
            {
                CategoryBUS bus = new CategoryBUS();
                int temp = 0;
                int.TryParse(hdfId.Value + "", out temp);
                if (bus.CheckExistsName(txtname.Text, temp))
                    masseng = "Trùng tên chuyên mục";
            }
            return masseng;
        }
        private void LoadData()
        {
            dlCategory.DataSource = Bus.GetAll("", -1);
            dlCategory.DataBind();
        }
        protected void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                pnError.Visible = false;
                pnSuccess.Visible = false;
                string message = checkInput();
                int status = 0;
                if (message == "")
                {
                    CategoryDTO dto = GetDTO();

                    if (hdfId.Value == null || hdfId.Value == "")
                    {
                        Bus.Insert(dto);
                        status = 1;
                    }
                    else
                    {
                        Bus.Edit(dto);
                        status = 2;
                        hdfId.Value = null;
                    }
                    pnSuccess.Visible = true;
                    if (status == 1)
                    {
                        lblSuccess.Text = "Bạn vừa thêm thành công chuyên mục !";
                    }
                    else
                        if (status == 2)
                        {
                            lblSuccess.Text = "Bạn vừa cập nhật thành công chuyên mục !";
                        }
                }
                else
                {

                    pnSuccess.Visible = false;
                    pnError.Visible = true;
                    lblError.Text = message;

                }

            }
            catch (Exception ex)
            {

                pnSuccess.Visible = false;
                pnError.Visible = true;
                lblError.Text = " Đã xảy ra lỗi trong quá trình thực hiện. Vui lòng thử lại !<br/>" + ex.Message;
                logs.Error(userLogin.Username + "-BlogCatetory - Update", ex);
            }
            LoadData();
            xoatextbok();

        }
        protected void btnDelete_Click(object sender, ImageClickEventArgs e)
        {
            int id = int.Parse(((ImageButton)sender).CommandArgument.ToString());
            bool isdelete = Bus.CheckBeforeDelete(id);
            if (!isdelete)
            {
                pnSuccess.Visible = false;
                pnError.Visible = true;
                lblError.Text = "Không thể xóa chuyên mục này vì được sử dụng trong nhóm blogs";
                return;
            }
            try
            {

                if (Bus.Delete(id))
                {
                    LoadData();
                    pnError.Visible = false;
                    pnSuccess.Visible = true;
                    lblSuccess.Text = "Xóa thành công";
                }
            }
            catch (Exception ex)
            {
                pnError.Visible = true;
                lblError.Text = "Không thể xóa !</br>" + ex.Message;
                logs.Error(userLogin.Username + "-BlogCatetory-Delete-", ex);
            }

        }
        protected void btnEdit_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                int id = int.Parse((((ImageButton)sender).CommandArgument.ToString()));
                DataTable table = Bus.GetByID(id);
                if (table.Rows.Count > 0)
                {
                    txtname.Text = table.Rows[0]["categoryname"].ToString();
                    txtdescription.Text = table.Rows[0]["description"].ToString();
                    this.hdfId.Value = id + "";
                    cbIsShow.Checked = Convert.ToBoolean(table.Rows[0]["IsShow"]);
                }
            }
            catch (Exception ex)
            {
                pnError.Visible = false;
                pnSuccess.Visible = false;
                logs.Error(userLogin.Username + "-BlogCatetory - Edit", ex);
            }
        }
    }
}